package com.cskaoyan.javase.oop2._1extends._9final._3variable._3static;

/**
 * @description: final修饰静态成员变量
 * @author: wuguidong@cskaoyan.onaliyun.com
 **/

/**
 * final修饰静态成员变量表示一个静态的"常量",在类的全局仅有一份,所以final修饰静态成员变量,也称之为"全局常量"
 * 它是一个真正意义上的常量,不会因为创建对象而更改
 *
 * 语法:
 *      [访问权限修饰符] static final 数据类型 变量名;
 * 和final修饰成员变量一样,全局常量的取值也不能依赖于默认值,必须明确指出,静态成员变量的赋值方式:
 *      1.显式赋值
 *      2.静态代码块
 * 以上赋值方式是类加载过程中的赋值方式,以上赋值方式必须选择其一,也只能选择其一
 * 其他的赋值方式,比如在创建对象过程中的赋值方式,都是不可以的
 *
 * 注意事项:
 *      1.final static还是static final都是可以的,根据个人习惯使用即可
 *      2.final修饰静态成员变量可以直接用类名点访问,所以在很多时候,它们的访问权限修饰符都是public
 *      3.如果使用静态代码测试类加载,那么访问类的全局常量,有些场景是不会触发类加载的
 *
 *
 *
 */
public class Demo {
    public static void main(String[] args) {
        //Person.nationality = "";
    }
}

class Person {
    public final static  String nationality;

    static {
        nationality = "🇺🇸";
    }

    //public Person(String nationality) {
    //    Person.nationality = nationality;
    //}
}